package com.ruijixiang.leetcode.hot100;

import java.util.HashSet;
import java.util.Set;

public class leetcode0160 {
    /**
     * 方法一：哈希集合
     * 方法二：双指针：
     *  headA：m=a+c(相交部分)
     *  headB：n=b+c(相交部分)
     * @param headA
     * @param headB
     * @return
     */
    public ListNode getIntersectionNode(ListNode headA,ListNode headB){
        // 方法一：哈希集合
//        Set<ListNode> set=new HashSet<>();
//        ListNode tmp=headA;
//        while(tmp!=null){
//            set.add(tmp);
//            tmp=tmp.next;
//        }
//        tmp=headB;
//        while(tmp!=null){
//            if(set.contains(tmp)) {
//                return tmp;
//            }
//            tmp=tmp.next;
//        }
//        return null;
        // 方法二：双指针
        if(headA==null || headB==null){
            return null;
        }
        ListNode pa=headA,pb=headB;
        while(pa!=pb){
            pa=pa==null ? headB : pa.next;
            pb=pb==null ? headA : pb.next;
        }
        return pa;
    }
}
